{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7856c51c-c58c-4ed6-a714-90fb878b471e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1. 3x3矩阵(int32类型):\n",
      "[[11 13 18]\n",
      " [45 46 78]\n",
      " [15 87 33]]\n",
      "矩阵数据类型: int32\n",
      "\n",
      "2. 数组属性:\n",
      "形状(shape): (3, 3)\n",
      "元素总数(size): 9\n",
      "维度(ndim): 2\n",
      "元素大小(itemsize): 4 字节\n",
      "\n",
      "3. 第2行第3列的元素: 78\n",
      "\n",
      "4. 第2行、列步长为2的元素: [45 78]\n",
      "\n",
      "5. 第1~2行、第2~3列的元素:\n",
      "[[13 18]\n",
      " [46 78]]\n",
      "\n",
      "6. 整数数组索引结果: [13 78]\n",
      "\n",
      "7. 大于30小于80的元素: [45 46 78 33]\n",
      "\n",
      "8. linspace创建的等差数列: [ 5. 14. 23. 32. 41. 50.]\n",
      "   公差: 9.0\n",
      "\n",
      "9. logspace创建的等比数列: [1.00000000e+00 5.79954613e+00 3.36347354e+01 1.95066200e+02\n",
      " 1.13129542e+03 6.56100000e+03]\n"
     ]
    }
   ],
   "source": [
    "# 使用 NumPy 创建一个 3x3 的矩阵，并完成以下操作：\n",
    "# 如数组为：[ [11，13，18],[45,46,78],[15,87,33]]\n",
    "# 1.设置矩阵类型为int32并输出；\n",
    "# 2.查看数组的各种属性，如表2-2四种属性；\n",
    "# 3.索引 第2行，第3列的元素；\n",
    "# 4.切片 第2行、列步长为2的元素；\n",
    "# 5.切片 第1~2行、第2~3列的元素；\n",
    "# 6.通过整数数组作为索引 第1行第2列、第2行第3列的元素\n",
    "# 7.通过使用布尔型索引  大于30小于80的元素\n",
    "# 8.通过linspace函数创建 [5,50]区间，元素个数为6的等差数列 显示公差\n",
    "# 9.通过logspace函数创建指数区间为[0，8），元素个数为6，底数为3的等比数列\n",
    "import numpy as np\n",
    "\n",
    "# 创建3x3矩阵并设置类型为int32\n",
    "matrix = np.array([[11, 13, 18], [45, 46, 78], [15, 87, 33]], dtype=np.int32)\n",
    "print(\"1. 3x3矩阵(int32类型):\")\n",
    "print(matrix)\n",
    "print(f\"矩阵数据类型: {matrix.dtype}\")\n",
    "print()\n",
    "\n",
    "# 查看数组的四种属性\n",
    "print(\"2. 数组属性:\")\n",
    "print(f\"形状(shape): {matrix.shape}\")       # 维度信息\n",
    "print(f\"元素总数(size): {matrix.size}\")     # 总元素数量\n",
    "print(f\"维度(ndim): {matrix.ndim}\")         # 维度数量\n",
    "print(f\"元素大小(itemsize): {matrix.itemsize} 字节\")  # 每个元素的字节大小\n",
    "print()\n",
    "\n",
    "# 索引第2行，第3列的元素(注意：NumPy使用0基索引)\n",
    "# 第2行对应索引1，第3列对应索引2\n",
    "element = matrix[1, 2]\n",
    "print(f\"3. 第2行第3列的元素: {element}\")\n",
    "print()\n",
    "\n",
    "# 切片第2行、列步长为2的元素\n",
    "# 第2行对应索引1，列步长为2表示取0,2列\n",
    "row_slice = matrix[1, ::2]\n",
    "print(f\"4. 第2行、列步长为2的元素: {row_slice}\")\n",
    "print()\n",
    "\n",
    "# 切片第1~2行、第2~3列的元素\n",
    "# 行索引0-1(包含)，列索引1-2(包含)\n",
    "submatrix = matrix[0:2, 1:3]\n",
    "print(\"5. 第1~2行、第2~3列的元素:\")\n",
    "print(submatrix)\n",
    "print()\n",
    "\n",
    "# 通过整数数组作为索引获取第1行第2列、第2行第3列的元素\n",
    "# 对应索引位置(0,1)和(1,2)\n",
    "selected_elements = matrix[[0, 1], [1, 2]]\n",
    "print(f\"6. 整数数组索引结果: {selected_elements}\")\n",
    "print()\n",
    "\n",
    "# 通过布尔型索引获取大于30小于80的元素\n",
    "bool_mask = (matrix > 30) & (matrix < 80)\n",
    "filtered_elements = matrix[bool_mask]\n",
    "print(f\"7. 大于30小于80的元素: {filtered_elements}\")\n",
    "print()\n",
    "\n",
    "# 通过linspace函数创建[5,50]区间，6个元素的等差数列并显示公差\n",
    "lin_array = np.linspace(5, 50, 6)\n",
    "step = lin_array[1] - lin_array[0]\n",
    "print(f\"8. linspace创建的等差数列: {lin_array}\")\n",
    "print(f\"   公差: {step}\")\n",
    "print()\n",
    "\n",
    "# 通过logspace函数创建指数区间为[0，8)，6个元素，底数为3的等比数列\n",
    "log_array = np.logspace(0, 8, 6, base=3)\n",
    "print(f\"9. logspace创建的等比数列: {log_array}\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "32981644-c81a-48fe-8cd3-5f1feefc2f20",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
